package com.regex.web.baidu.ai.image;

import java.net.URLEncoder;

import com.regex.web.baidu.ai.AuthService;
import com.regex.web.baidu.ai.Base64Util;
import com.regex.web.baidu.ai.FileUtil;
import com.regex.web.baidu.ai.HttpUtil;
import com.regex.web.baidu.ai.NetImageUtils;

/**
 * 图片文字识别
 * @author ocean.regex
 *
 */
public class General {
	
	public static void main(String[] args) {
        // 通用文字识别（含位置信息版）
        String otherHost = "https://aip.baidubce.com/rest/2.0/ocr/v1/general";
		// 通用文字识别（高精度版）
//		String otherHost = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic";
        // 通用文字识别（含生僻字版）
//        String otherHost = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_enhanced";
        // 手写文字识别
//        String otherHost = "https://aip.baidubce.com/rest/2.0/ocr/v1/handwriting";
        // 本地图片路径
//        String filePath = "https://regex.oss-cn-shanghai.aliyuncs.com/18bdd147-188b-45ea-9581-1feedef108cb.png";
//        try {
//            byte[] imgData = FileUtil.readFileByBytes(filePath);
//            String imgStr = Base64Util.encode(imgData);
//            String params = URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode(imgStr, "UTF-8");
//            /**
//             * 线上环境access_token有过期时间， 客户端可自行缓存，过期后重新获取。
//             */
//            String accessToken = AuthService.getAuth();
//            String result = HttpUtil.post(otherHost, accessToken, params);
//            System.out.println(result);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
        
        String path = "E:/project/spring_boot_base/regex-web-admin/src/main/webapp/image/brand/2019/03/30/21/8eb06c8f-3211-45b6-90f1-567d4ba9e675.jpg";
        getLocalPicText("E:/project/spring_boot_base/regex-web-admin/src/main/webapp/image/brand/2019/03/30/21/960a304e251f95ca9863c00dc1177f3e660952f2.jpg");
    }
	/**
	 * 本地图片pic 获取内容
	 * @param localPic
	 * @return
	 */
	public static String getLocalPicText(String localPic) {
		String result = "";
		// 通用文字识别（含位置信息版）
        String otherHost = "https://aip.baidubce.com/rest/2.0/ocr/v1/general";
		// 通用文字识别（高精度版）
//		String otherHost = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic";
        // 通用文字识别（含生僻字版）
//        String otherHost = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_enhanced";
        // 手写文字识别
//        String otherHost = "https://aip.baidubce.com/rest/2.0/ocr/v1/handwriting";
        // 本地图片路径
//        String filePath = "https://regex.oss-cn-shanghai.aliyuncs.com/18bdd147-188b-45ea-9581-1feedef108cb.png";
        try {
            byte[] imgData = FileUtil.readFileByBytes(localPic);
            String imgStr = Base64Util.encode(imgData);
            String params = URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode(imgStr, "UTF-8");
            /**
             * 线上环境access_token有过期时间， 客户端可自行缓存，过期后重新获取。
             */
            String accessToken = AuthService.getAuth();
            result = HttpUtil.post(otherHost, accessToken, params);
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
	}
	/**
	 * 获取网络图片
	 * @param filePath filePath = "https://regex.oss-cn-shanghai.aliyuncs.com/18bdd147-188b-45ea-9581-1feedef108cb.png";
	 * @return
	 */
	public static String netPicText(String filePath) {
		String result = "";
		// 通用文字识别（含位置信息版）
        String otherHost = "https://aip.baidubce.com/rest/2.0/ocr/v1/general";
		// 通用文字识别（高精度版）
//		String otherHost = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic";
        // 通用文字识别（含生僻字版）
//        String otherHost = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_enhanced";
        // 手写文字识别
//        String otherHost = "https://aip.baidubce.com/rest/2.0/ocr/v1/handwriting";
        // 本地图片路径
        try {
            byte[] imgData = NetImageUtils.getImgerFormNetByUrl(filePath);
            String imgStr = Base64Util.encode(imgData);
            String params = URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode(imgStr, "UTF-8");
            /**
             * 线上环境access_token有过期时间， 客户端可自行缓存，过期后重新获取。
             */
            String accessToken = AuthService.getAuth();
            result = HttpUtil.post(otherHost, accessToken, params);
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
	}
	

}
